const ksVue = (obj) => {
  for (let key in obj) {
    let initVal = obj[key]
    let funcList = []
    Object.defineProperty(obj, key, {
      get() {
        // 获取属性依赖的事件，并存起来。set的时候执行。
        let fn = window.__func
        if (fn && !funcList.includes(fn)) {
          funcList.push(fn)
        }
        return initVal
      },
      set(val) {
        console.log('set:', val, funcList)
        initVal = val
        for (let i = 0; i < funcList.length; i++) {
          funcList[i]()
        }
      },
    })
  }
}

// 测试用的函数
function abc() {
  console.log('abc执行了')
}

function autorun(fn) {
  window.__func = fn
  fn()
  window.__func = null
}
